<?php

namespace app\module\admin\controller;

use app\BaseController;
use app\common\service\JwtService;
use think\facade\Db;
use think\facade\Session;
use think\wenhainan\Auth;
use app\module\admin\common\MenuHelper;

class Index extends BaseController
{
    /**
     * 跳过JWT验证的方法
     * @return array
     */
    protected function skipAuthMethods(): array
    {
        // 登录方法不需要验证JWT
        return ['login'];
    }

    public function login(): \think\Response
    {
        //添加用户登录
        $postData = $this->request->post();

        // 检查post数据是否存在且不为空
        if (empty($postData)) {
            return $this->error('请提交登录信息');
        }

        // 使用validate方法进行验证，使用正确的规则格式
        $rule = [
            'account|登录账号' => 'require',
            'password|登录密码' => 'require|min:6',
        ];

        $message = [
            'account.require' => '登录账号不能为空!',
            'password.require' => '登录密码不能为空!',
            'password.min' => '密码不能少于6位字符!',
        ];

        $validateResult = $this->validate($postData, $rule, $message);

        // 检查验证结果
        if ($validateResult !== true) {
            return $this->error($validateResult);
        }
        //检查用户信息
        $user = Db::name('user')->where('account', $postData['account'])->find();
        if (empty($user)) {
            return $this->error('用户信息不存在');
        }
        if ($user['password'] !== md5($postData['password'])) {
            return $this->error('密码或账号不正确');
        }

        //创建token
        $token = (new JwtService)->generateToken($user['id'], $user['account']);
        return $this->success([
            'access_token' => $token
        ]);
    }


}
